map に対する操作はスレッドセーフではない
from Go
map に対する操作はスレッドセーフではない
RWMutex を使ってロックをとる
RLock(読取) 同士は競合しない
KeyValue マッピングの実装 from みんなのGo言語
code:map.go
package main
import "sync"
type KeyValue struct {
store mapstringstring
mu sync.RWMutex
}
func NewKeyValue() *KeyValue {
return &KeyValue{
store: make(mapstringstring),
}
}
func (kv *KeyValue) Set(key, val string) {
kv.mu.Lock()
defer kv.mu.Unlock()
kv.storekey = val
}
func (kv *KeyValue) Get(key string) (string, bool) {
kv.mu.RLock()
defer kv.mu.RUnlock()
val, ok := kv.storekey
return val, ok
}
#Go